//保存选择记录的数组
var selectIds = new Array();

$(function () {

    vm.getProjects();
    vm.getDeptList();


    //获取页面id
    var machineId = T.p("machineId");
    console.log("获取机器id:" + machineId);
    var pageNum = T.p("pageNum");
    console.log("pageNum:" + pageNum);

    if (machineId != null) {
        saveIdToArray(machineId);
    }
    if (pageNum == null) {
        pageNum=1;
    }

    $("#jqGrid").jqGrid({
        url: baseURL + '/machine/list',
        datatype: "json",
        mtype: "GET", //ajax提交方式。POST或者GET，默认GET
        colNames: ['编号', '机器名称', '所属项目', "所属公司", '创建时间', '更新时间'], //表头
        /*
        colModel对json数组中对象如何解析填充到表格的cell的设定
        name   ：为Grid中的每个列设置唯一的名称，这是一个必需选项，其中保留字包括subgrid、cb、rn。
        index   ：设置排序时所使用的索引名称，这个index名称会作为sidx参数（prmNames中设置的）传递到Server。
        label   ：当jqGrid的colNames选项数组为空时，为各列指定题头。如果colNames和此项都为空时，则name选项值会成为题头。
        width   ：设置列的宽度，目前只能接受以px为单位的数值，默认为150。
        sortable   ：设置该列是否可以排序，默认为true。
        search   ：设置该列是否可以被列为搜索条件，默认为true。
        resizable   ：设置列是否可以变更尺寸，默认为true。
        hidden   ：设置此列初始化时是否为隐藏状态，默认为false。
        formatter   ：预设类型或用来格式化该列的自定义函数名。常用预设格式有：integer、date、currency、还支持custom的方式
        key : 当从服务器端返回的数据中没有id时，将此作为唯一rowid使用只有一个列可以做这项设置。如果设置多于一个，那么只选取第一个，其他被忽略
         */
        //常用到的属性：name 列显示的名称；index 传到服务器端用来排序用的列名称；width 列宽度；align 对齐方式；sortable 是否可以排序
        colModel: [	//这里会根据index去解析jsonReader中root对象的属性，填充cell
            {name: 'id', index: 'id', width: 50, key: true},
            {name: 'name', index: 'name', width: 80, sortable: false},
            {name: 'projectName', index: 'project_id', width: 80, sortable: false},
            {name: 'deptName', index: 'dept_id', width: 80, sortable: false},
            {name: 'createTime', index: 'create_time', width: 80},
            {name: 'updateTime', index: 'update_time', width: 80}
        ],
        viewrecords: true, //显示记录数信息，如果这里设置为false,下面的不会显示 recordtext: "第{0}到{1}条, 共{2}条记录"
        height: '100%', //表格高度
        rowNum: 15,  //每页记录数 这个参数是要被传递到后台
        rowList: [15, 25, 35],  //每页记录数可选列表
        rownumbers: true, //设置列表显示序号,需要注意在colModel中不能使用rn作为index
        rownumWidth: 50, //设置显示序号的宽度，默认为25
        autowidth: true, //如果为ture时，则当表格在首次被创建时会根据父元素比例重新调整表格宽度。如果父元素宽度改变，为了使表格宽度能够自动调整则需要实现函数：setGridWidth
        multiselect: true,//多选框
        multiboxonly: false, //在点击表格row时只支持单选，只有当点击checkbox时才多选，需要multiselect=true是有效
        caption: "机器列表", //显示查询结果表格标题
        page:pageNum,
        pager: "#jqGridPager", //分页标签divID
        // sortname: "id", //默认的排序列。可以是列名称或者是一个数字，这个参数会被提交到后台
        // sortorder: "desc",
        jsonReader: { //server返回Json解析设定
            root: "page.list", //数据列表
            page: "page.currPage", //当前页
            total: "page.totalPage", //总页数
            records: "page.totalCount" //总记录数
        },
        prmNames: {
            page: "page",
            rows: "limit",
            order: "order"
        },
        gridComplete: function () {
            //隐藏grid底部滚动条
            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
        },
        loadComplete: function (xhr) {
            if (xhr.code != 0) {
                alert(xhr.msg);
            }

            if (selectIds.length>0){
                for (var i = 0; i < selectIds.length; i++) {
                    $("#jqGrid").jqGrid('setSelection', selectIds[i]);
                }
            }


        },
        onSelectAll: function (aRowids, status) {
            console.log("onSelectAll" + aRowids + status);
            if (status == true) {
                $.each(aRowids, function (i, item) {
                    saveIdToArray(item);
                });
            } else {
                $.each(aRowids, function (i, item) {
                    deleteIdFromArray(item);
                });
            }

            console.log("选中的id:" + selectIds);
        },

        onSelectRow: function (aRowids, status) {
            console.log("onSelectRow" + aRowids + status);

            if (status == true) { //选择
                saveIdToArray(aRowids);
            } else { //取消选择
                deleteIdFromArray(aRowids);
            }

            console.log("选中的id:" + selectIds);

        }
    });
});


//保存到数组
function saveIdToArray(item) {
    for (var i = 0; i < selectIds.length; i++) {
        if (item == selectIds[i]) {
            return;
        }
    }
    selectIds.push(item);
}

//从数组中删除
function deleteIdFromArray(item) {
    if (selectIds.length > 0) {
        for (var i = 0; i < selectIds.length; i++) {
            if (item == selectIds[i]) {
                selectIds.splice(i, 1);
                break;
            }
        }
    }
}

var setting = {
    data: {
        simpleData: {
            enable: true, //设置是否启用简单数据格式
            idKey: "deptId", //设置启用简单数据格式时id对应的属性名称
            pIdKey: "parentId", //设置启用简单数据格式时parentId对应的属性名称,ztree根据id及pid层级关系构建树结构
            rootPId: -1 //最上层父节点
        },
        key: {
            url: "nourl" //设置 zTree 显示节点时，将 treeNode 的 xUrl 属性当做节点链接的目标 URL
        }
    }
};

var ztree;

var vm = new Vue({
    el: '#rrapp',
    data: {
        q: {
            machineName: '',
            projectId: '',
            deptId: ''
        },
        showList: true,
        title: null,
        deptList: [],
        projectList: [],
        projects:[],
        machine: {
            id: null,
            name: null,
            projectId: null,
            deptId: null,
            projectName: null,
            deptName: null
        }

    },
    methods: {
        query: function () {
            vm.reload();
        },
        add: function () {
            vm.showList = false;
            vm.title = "新增";
            vm.projectList= [],
            vm.machine = {
                id: null,
                name: null,
                projectId: null,
                deptId: null,
                projectName: null,
                deptName: null
            };

            vm.getDept();

        },
        update: function (event) {
            var id = getSelectedRow();
            if (id == null) {
                return;
            }
            vm.showList = false;
            vm.title = "修改";

            vm.getInfo(id);
        },
        saveOrUpdate: function (event) {
            var url = vm.machine.id == null ? "machine/save" : "machine/update";
            $.ajax({
                type: "POST",
                url: baseURL + url,
                contentType: "application/json",
                data: JSON.stringify(vm.machine),
                success: function (r) {
                    if (r.code === 0) {
                        alert('操作成功', function (index) {
                            vm.reload();
                        });
                    } else {
                        alert(r.msg);
                    }
                }
            });
        },
        del: function (event) {
            var ids = getSelectedRows();
            if (ids == null) {
                return;
            }

            confirm('确定要删除选中的记录？', function () {
                $.ajax({
                    type: "POST",
                    url: baseURL + "machine/delete",
                    contentType: "application/json",
                    data: JSON.stringify(ids),
                    success: function (r) {
                        if (r.code == 0) {
                            alert('操作成功', function (index) {
                                $("#jqGrid").trigger("reloadGrid");
                            });
                        } else {
                            alert(r.msg);
                        }
                    }
                });
            });
        },
        getInfo: function (id) {
            $.get(baseURL + "machine/info/" + id, function (r) {
                vm.machine = r.machine;
                console.log(JSON.stringify(vm.machine));
                vm.getDept();
                vm.getProject(r.machine.deptId,r.machine.projectId);
            });
        },
        getDept: function () {
            //加载部门树
            $.get(baseURL + "sys/dept/list", function (r) {
                ztree = $.fn.zTree.init($("#deptTree"), setting, r);
                var node = ztree.getNodeByParam("deptId", vm.machine.deptId);
                if (node != null) {
                    ztree.selectNode(node);
                    vm.machine.deptName = node.name;
                }
            })
        },
        deptTree: function () {
            layer.open({
                type: 1,
                offset: '50px',
                skin: 'layui-layer-molv',
                title: "选择部门",
                area: ['300px', '450px'],
                shade: 0,
                shadeClose: false,
                content: jQuery("#deptLayer"),
                btn: ['确定', '取消'],
                btn1: function (index) {
                    var node = ztree.getSelectedNodes();
                    vm.machine.deptId = node[0].deptId;
                    vm.machine.deptName = node[0].name;
                    //选中部门后,加载相应部门的项目列表
                    vm.getProjectList(node[0].deptId);
                    layer.close(index);
                }
            });
        },
        getProject: function (deptId,projectId) {
            vm.projectList = [];
            vm.machine.projectId=null;
            //加载项目树
            $.get(baseURL + "project/list/" + deptId, function (r) {
                if (r.code === 0) {
                    if (r.projectList.length ==0 ){
                        alert("该部门下项目不存在,请新建项目")
                    }else {
                        vm.projectList = r.projectList;
                        vm.machine.projectId = projectId;
                    }
                } else {
                    alert(r.msg);
                }
            })
        },
        getProjectList: function (deptId) {
            vm.projectList = [];
            vm.machine.projectId = null;
            //加载项目树
            $.get(baseURL + "project/list/" + deptId, function (r) {
                if (r.code === 0) {
                    if (r.projectList.length ==0 ){
                        alert("该部门下项目不存在,请新建项目")
                    }else {
                        vm.projectList = r.projectList;
                        vm.machine.projectId=r.projectList[0].id;
                    }
                } else {
                    alert(r.msg);
                }
            })
        },

        getDeptList: function () {
            $.get(baseURL + "sys/dept/list", function (r) {
                vm.deptList = r;
            });
        },

        getProjects: function(){
            $.get(baseURL + "project/list?page=1&limit=99", function (r) {
                vm.projects = r.page.list;
            });
        },

        reload: function (event) {
            vm.showList = true;
            var page = $("#jqGrid").jqGrid('getGridParam', 'page'); //获取当前页数
            $("#jqGrid").jqGrid('setGridParam', {
                postData: {
                    "deptId": vm.q.deptId,
                    "projectId": vm.q.projectId,
                    "machineName": vm.q.machineName
                },
                page: page
            }).trigger("reloadGrid");
        },

        reset: function(){
            vm.q.deptId = '';
            vm.q.projectId = '';
            vm.q.machineName = '';
        },

        //去机器数据页面
        toDataList: function () {
            console.log("去机器列表页面");
            var id = getSelectedRow();
            if (id == null) {
                return;
            }
            console.log("id:" + id);
            var page = $("#jqGrid").jqGrid('getGridParam', 'page'); //获取当前页数
            window.location.href = 'machinedata.html?machineId='+id+'&pageNum='+page+'';

        },

        //去数据分析页面
        toDataAnalyze: function () {
            console.log("去数据分析页面");
            var id = getSelectedRow();
            if (id == null) {
                return;
            }
            console.log("id:" + id);
            var page = $("#jqGrid").jqGrid('getGridParam', 'page'); //获取当前页数
            window.location.href = 'dataAnalyze.html?machineId='+id+'&pageNum='+page+'';

        },

        //去首检页面
        toDataCheck: function () {
            console.log("去首检页面");
            var id = getSelectedRow();
            if (id == null) {
                return;
            }
            console.log("id:" + id);
            var page = $("#jqGrid").jqGrid('getGridParam', 'page'); //获取当前页数
            window.location.href = 'machineCheck.html?machineId='+id+'&pageNum='+page+'';
        },

        //去机器错误信息页面
        toMachineErrorInfo: function () {
            console.log("去机器错误信息页面");
            var id = getSelectedRow();
            if (id == null) {
                return;
            }
            console.log("id:" + id);
            var page = $("#jqGrid").jqGrid('getGridParam', 'page'); //获取当前页数
            window.location.href = 'machineErrorInfo.html?machineId='+id+'&pageNum='+page+'';
        },
        //去机器日常工作页面
        toMachineDailyInfo: function () {
            console.log("去机器日常信息页面");
            var id = getSelectedRow();
            if (id == null) {
                return;
            }
            console.log("id:" + id);
            var page = $("#jqGrid").jqGrid('getGridParam', 'page'); //获取当前页数
            window.location.href = 'machineDailyInfo.html?machineId='+id+'&pageNum='+page+'';
        },
        //去机器零件统计页面
        toMachinePartCount: function () {
            var id = getSelectedRow();
            if (id == null) {
                return;
            }
            console.log("id:" + id);
            var page = $("#jqGrid").jqGrid('getGridParam', 'page'); //获取当前页数
            window.location.href = 'machinePartCount.html?machineId='+id+'&pageNum='+page+'';
        },
        //去机器工作记录页面
        toMachineWorkRecord: function () {
            var id = getSelectedRow();
            if (id == null) {
                return;
            }
            console.log("id:" + id);
            var page = $("#jqGrid").jqGrid('getGridParam', 'page'); //获取当前页数
            window.location.href = 'machineWorkRecord.html?machineId='+id+'&pageNum='+page+'';
        },
        //去数据统计页面
        toDataStatistics: function () {
            console.log("去数据统计页面");
            var id = getSelectedRow();
            if (id == null) {
                return;
            }
            console.log("id:" + id);
            var page = $("#jqGrid").jqGrid('getGridParam', 'page'); //获取当前页数
            window.location.href = 'dataStatistics.html?machineId='+id+'&pageNum='+page+'';

        },
    }
});